import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;

public class Test {


    //城市群的数量
    //图的遍历dfs bfs
    //给定一个 n 个节点的邻接矩阵 m。 节点定义为城市，如果 a 城市与 b 城市相连，
    // b 与 c 城市相连，尽管 a 与 c 并不直接相连，但可以认为 a 与 c 相连，
    // 定义 a,b,c 是一个城市群。
    //矩阵 m[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连，否则表示不相连。
    //请你找出共有多少个城市群。
    //数据范围：1≤n≤200  ， 矩阵中只包含0 和1
    //示例1
    //输入：
    //[[1,1,0],[1,1,0],[0,0,1]]
    //返回值：
    //2
    //说明：
    //1 2 相连，3 独立，因此是 3 个城市群。
    //示例2
    //输入：
    //[[1,1,0,0],[1,1,1,0],[0,1,1,0],[0,0,0,1]]
    //返回值：
    //2
    //说明：
    //1 ， 2相连 ；2 ，3相连，4独立，因此是 1,2,3 属于一个城市群，4属于一个城市群。
    int n;
    boolean[] vis = new boolean[210];
    public int citys (ArrayList<ArrayList<Integer>> m) {
        n = m.size();
        int ret =0;
        for (int i = 0; i < n; i++) {
            if(vis[i] == false){
                ret++;
                dfs(m,i);
            }
        }
        return ret;
    }

    private void dfs(ArrayList<ArrayList<Integer>> m, int pos) {
        vis[pos] = true;

        for (int i = 0; i < n; i++) {
            if(m.get(pos).get(i) == 1 && vis[i] == false){
                dfs(m,i);
            }
        }
    }


    //字符串的分类（哈希、排序）
    //链接：https://www.nowcoder.com/questionTerminal/9fbb4d95e6164cd9ab52e859fbe8f4ec
    //来源：牛客网
    //
    //牛牛有N个字符串，他想将这些字符串分类，他认为两个字符串A和B属于同一类需要满足以下条件：
    //A中交换任意位置的两个字符，最终可以得到B，交换的次数不限。
    // 比如：abc与bca就是同一类字符串。
    //现在牛牛想知道这N个字符串可以分成几类。
    //输入描述:
    //首先输入一个正整数N（1 <= N <= 50），接下来输入N个字符串，每个字符串长度不超过50。
    //输出描述:
    //输出一个整数表示分类的个数。
    //示例1
    //输入
    //4
    //abcd
    //abdc
    //dabc
    //bacd
    //输出
    //1
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        HashSet<String> set = new HashSet<>();

        while(n-- != 0){
            char[] s = in.next().toCharArray();
            Arrays.sort(s);
            set.add((new String(s)));
        }
        System.out.println(set.size());
    }




    //打怪(模拟)
    //链接：https://ac.nowcoder.com/acm/problem/202487
    //来源：牛客网
    //你是一个勇士，现在你准备去森林刷毛球怪，你有两个属性（血量，攻击力），
    // 毛球怪也有这两个属性。当你遭遇一只毛球怪时你们会进入战斗，然后你和毛球怪轮流攻击
    // （你先手），每次使对方的血量减去自己攻击力的数值，当一方的血量小于等于 0 时死亡。
    // 现在你想知道在自己活着的前提下最多杀死几只毛球怪。
    //输入描述:
    //第一行一个正整数t，代表测试数据组数。
    //第二行四个正整数h，a，H，A，代表你的血量和攻击力以及毛球怪的血量和攻击力。
    //所有整数大小不超过1000。
    //输出描述:
    // 共 t 行，每行一个整数x，代表最多能杀死多少毛球怪。如果能杀死无数只，输出-1。
    //示例1
    //输入
    //1
    //5 1 2 1
    //输出
    //4
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);
        int h ,a,H,A;
        int x = in.nextInt();

        while (x-- != 0){
            h = in.nextInt();
            a = in.nextInt();
            H = in.nextInt();
            A = in.nextInt();

            if(a>H) System.out.println(-1);
            else{
                int m = H/a + (H%a != 0 ? 1 : 0);
                int n = m-1;
                int ret = h/(n*A) - (h%(n*A) == 0 ? 1 : 0);
                System.out.println(ret);
            }
        }
    }

}
